The present disclosure is directed to methods and apparatus for precoding a signal at a transmitter. Precoding supports transmission of multiple streams in a wireless communications system with multiple antennas. In multi-user multiple-input multiple-output (MUMIMO) systems, different data streams are intended for different receiving devices or different users. In general, if the transmitter has some information regarding the channel, the transmitter can make use of the known channel information to precode signals to be transmitted over the channel. Precoding involves applying different weights to the data streams such that some measure of the total throughput from the transmitter to the multiple receivers or users is increased or maximized.